// src/utils/axiosInstance.js
import axios from "axios";

// 创建 Axios 实例
const axiosInstance = axios.create({
  //baseURL: "https://localhost:8080", // 你的 API 基础 URL
  timeout: 10000, // 请求超时时间
  headers: { "Content-Type": "application/json" },
});

// 添加请求拦截器
axiosInstance.interceptors.request.use(
  (config) => {
    // 在发送请求之前做些什么，例如添加认证 token
    const token = localStorage.getItem("token");
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
axiosInstance.interceptors.response.use(
  (response) => {
    // 对响应数据做点什么
    return response.data;
  },
  (error) => {
    // 对响应错误做点什么
    if (error.response) {
      // 请求已发出，但服务器响应状态不在 2xx 范围内
      switch (error.response.status) {
        case 401:
          // 未授权，重定向到登录页面
          console.error("未授权，请登录");
          break;
        case 403:
          // 禁止访问
          console.error("禁止访问");
          break;
        case 404:
          // 资源未找到
          console.error("资源未找到");
          break;
        // 其他错误处理
        default:
          console.error("其他错误:", error.response.data);
      }
    } else if (error.request) {
      // 请求已发出，但没有收到响应
      console.error("没有收到响应:", error.request);
    } else {
      // 其他错误
      console.error("其他错误:", error.message);
    }
    return Promise.reject(error);
  }
);

// 导出 GET 和 POST 函数
export const get = (url, params = {}) => {
  return axiosInstance.get(url, { params });
};

export const post = (url, data = {}) => {
  return axiosInstance.post(url, data);
};

